package com.cy.dda.service.customer;

import java.util.List;

import com.cy.dda.model.PageBean;
import com.cy.dda.model.ao.customer.CustomerCompanyInfoEditAO;
import com.cy.dda.model.ao.customer.CustomerContactInfoEditAO;
import com.cy.dda.model.ao.customer.CustomerPersonalInfoEditAO;
import com.cy.dda.model.domain.customer.Customer;
import com.cy.dda.model.domain.customer.CustomerAttachment;
import com.cy.dda.model.domain.customer.CustomerCompanyEditRecord;
import com.cy.dda.model.domain.customer.CustomerInvestigationDesc;
import com.cy.dda.model.domain.customer.CustomerLiveAddressEditRecord;
import com.cy.dda.model.domain.customer.CustomerMobileEditRecord;
import com.cy.dda.model.query.customer.CustomerListAdminQuery;
import com.cy.dda.model.query.customer.CustomerListQuery;
import com.cy.dda.model.vo.customer.CustomerAttachmentVO;
import com.cy.dda.model.vo.customer.CustomerCompanyInfoVO;
import com.cy.dda.model.vo.customer.CustomerContactInfoVO;
import com.cy.dda.model.vo.customer.CustomerDetailInfoAdminVO;
import com.cy.dda.model.vo.customer.CustomerDetailInfoVO;
import com.cy.dda.model.vo.customer.CustomerListAdminVO;
import com.cy.dda.model.vo.customer.CustomerListVO;
import com.cy.dda.model.vo.customer.CustomerPersonalDataVO;
import com.cy.dda.model.vo.customer.CustomerPersonalInfoVO;

/**
 * 客户 CustomerService
 *
 * @author: tanyilin
 * @create: 2018年11月7日 下午3:53:07
 */
public interface CustomerService {

	/**
	 * 后台-客户列表，分页
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CustomerListAdminVO> selectCustomerListAdmin(CustomerListAdminQuery query);
	
	/**
	 * 后台-客户信息详情
	 * 
	 * @param customerId
	 * @return
	 */
	CustomerDetailInfoAdminVO selectCustomerDetailInfoAdminVO(Long customerId);
	
	/**
	 * 查询客户联系方式修改记录
	 * 
	 * @param customerId
	 * @return
	 */
	List<CustomerMobileEditRecord> selectCustomerMobileEditRecord(Long customerId);
	
	/**
	 * 查询客户居住地址修改记录
	 * 
	 * @param customerId
	 * @return
	 */
	List<CustomerLiveAddressEditRecord> selectCustomerLiveAddressEditRecord(Long customerId);
	
	/**
	 * 查询客户单位信息修改记录
	 * 
	 * @param customerId
	 * @return
	 */
	List<CustomerCompanyEditRecord> selectCustomerCompanyEditRecord(Long customerId);

	/**
	 * 添加客户附件资料
	 * 
	 * @param customerAttachment
	 */
	void addAttachment(CustomerAttachment customerAttachment);
	
	/**
	 * 前台-客户个人资料
	 * 
	 * @param customerId
	 * @return
	 */
	CustomerPersonalDataVO selectCustomerPersonalDataVO(Long customerId);
	
	/**
	 * 前台，查询我的客户列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CustomerListVO> selectCustomerList(CustomerListQuery query);
	
	/**
	 * 前台-客户详情
	 * 
	 * @param customerId
	 * @return
	 */
	CustomerDetailInfoVO selectCustomerDetailInfoVO(Long customerId);
	
	/**
	 * 查询客户附件资料
	 * 
	 * @param customerId
	 * @return
	 */
	List<CustomerAttachmentVO> selectCustomerAttachmentList(Long customerId);
	
	/**
	 * 客户个人信息
	 * 
	 * @param customerId
	 * @return
	 */
	CustomerPersonalInfoVO selectCustomerPersonalInfo(Long customerId);
	
	/**
	 * 客户联系人信息
	 * 
	 * @param customerId
	 * @return
	 */
	List<CustomerContactInfoVO> selectCustomerContactInfo(Long customerId);
	
	/**
	 * 客户单位信息
	 * 
	 * @param customerId
	 * @return
	 */
	CustomerCompanyInfoVO selectCustomerCompanyInfoVO(Long customerId);
	
	/**
	 * 更新客户个人信息
	 * 
	 * @param customer
	 */
	void updateCustomerPersonalInfo(CustomerPersonalInfoEditAO editAO, Long userId);
	
	/**
	 * 更新客户联系人信息
	 * 
	 * @param editAO
	 * @param userId
	 */
	void updateCustomerContactInfo(CustomerContactInfoEditAO editAO);
	
	/**
	 * 更新客户单位信息
	 * 
	 * @param editAO
	 * @param userId
	 */
	void updateCustomerCompanyInfo(CustomerCompanyInfoEditAO editAO, Long userId);
	
	/**
	 * 新增客户调查说明
	 * 
	 * @param customerInvestigationDesc
	 */
	void addCustomerInvestigationDesc(CustomerInvestigationDesc customerInvestigationDesc);
}
